/*
 * 官网地站:http://www.mob.com
 * 技术支持QQ: 4006852216
 * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）
 *
 * Copyright (c) 2013年 mob.com. All rights reserved.
 */

package cn.sharesdk.onekeyshare.themes.classic;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.mob.tools.utils.ResHelper;

/**
 * 下拉刷新的头部控件
 */
public class PRTHeader extends LinearLayout {
    private static final int DESIGN_SCREEN_WIDTH = 720;
    private static final int DESIGN_AVATAR_WIDTH = 64;
    private static final int DESIGN_AVATAR_PADDING = 24;

    private TextView tvHeader;
    private RotateImageView ivArrow;
    private ProgressBar pbRefreshing;

    @SuppressWarnings("deprecation")
    public PRTHeader(Context context) {
        super(context);
        int[] size = ResHelper.getScreenSize(context);
        float screenWidth = size[0] < size[1] ? size[0] : size[1];
        float ratio = screenWidth / DESIGN_SCREEN_WIDTH;

        setOrientation(VERTICAL);

        LinearLayout llInner = new LinearLayout(context);
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        lp.gravity = Gravity.CENTER_HORIZONTAL;
        addView(llInner, lp);

        ivArrow = new RotateImageView(context);
        int resId = ResHelper.getBitmapRes(context, "ssdk_oks_ptr_ptr");
        if (resId > 0) {
            ivArrow.setImageResource(resId);
        }
        int avatarWidth = (int) (ratio * DESIGN_AVATAR_WIDTH);
        lp = new LayoutParams(avatarWidth, avatarWidth);
        lp.gravity = Gravity.CENTER_VERTICAL;
        int avataPadding = (int) (ratio * DESIGN_AVATAR_PADDING);
        lp.topMargin = lp.bottomMargin = avataPadding;
        llInner.addView(ivArrow, lp);

        pbRefreshing = new ProgressBar(context);
        resId = ResHelper.getBitmapRes(context, "ssdk_oks_classic_progressbar");
        Drawable pbdrawable = context.getResources().getDrawable(resId);
        pbRefreshing.setIndeterminateDrawable(pbdrawable);
        llInner.addView(pbRefreshing, lp);
        pbRefreshing.setVisibility(View.GONE);

        tvHeader = new TextView(getContext());
        tvHeader.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        tvHeader.setPadding(avataPadding, 0, avataPadding, 0);
        tvHeader.setTextColor(0xff09bb07);
        lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        lp.gravity = Gravity.CENTER_VERTICAL;
        llInner.addView(tvHeader, lp);
    }

    public void onPullDown(int percent) {
        if (percent > 100) {
            int degree = (percent - 100) * 180 / 20;
            if (degree > 180) {
                degree = 180;
            }
            if (degree < 0) {
                degree = 0;
            }
            ivArrow.setRotation(degree);
        } else {
            ivArrow.setRotation(0);
        }

        if (percent < 100) {
            int resId = ResHelper.getStringRes(getContext(), "ssdk_oks_pull_to_refresh");
            if (resId > 0) {
                tvHeader.setText(resId);
            }
        } else {
            int resId = ResHelper.getStringRes(getContext(), "ssdk_oks_release_to_refresh");
            if (resId > 0) {
                tvHeader.setText(resId);
            }
        }
    }

    public void onRequest() {
        ivArrow.setVisibility(View.GONE);
        pbRefreshing.setVisibility(View.VISIBLE);
        int resId = ResHelper.getStringRes(getContext(), "ssdk_oks_refreshing");
        if (resId > 0) {
            tvHeader.setText(resId);
        }
    }

    public void reverse() {
        pbRefreshing.setVisibility(View.GONE);
        ivArrow.setRotation(180);
        ivArrow.setVisibility(View.VISIBLE);
    }

}
